package org.langqiao.io.file;

import java.util.Random;
import java.io.*;

/**
 * 随机数序列
 * @author YMY
 *
 */
public class AppendFile {
	
	private RandomAccessFile rafile;
	//构造方法
	public AppendFile(String filename) throws IOException {
		File file=new File(filename);
		if(file.exists())//如果文件已存在，则删除
			file.delete();
		this.rafile=new RandomAccessFile(filename,"rw");//创建文件对象，可读写
			
	}
	//在文件中查找指定的值
	public boolean search(int k) throws IOException {
		this.rafile.seek(0);//设置文件读指针在文件头的第一个整数位置
		while(true)//文件未结束时
		try{
			if(this.rafile.readInt()==k)//读取一个整数，文件读指针自动向后移动
				return true;//查找成功
		}catch(EOFException ioe){//捕获到达文件尾异常
			return false;//只有到达文件结束时，才能确定查找不成功
		}
	}
	//在文件中添加数据，不重复添加相同的数据
	public void append(int table[]) throws IOException {
		for(int i=0;i<table.length;i++){
			//在文件未查到
			if(!this.search(table[i]))
				this.rafile.writeInt(table[i]);//文件写入文件尾，指针向后移
			else
				System.out.print(table[i]+",");
		}
		System.out.println();
	}
	//从指定文件中读取数据
	public void readFromFile() throws IOException {
		System.out.print("readFromFile:");
		this.rafile.seek(0);
		int count=0;
		//文件未结束时
		while(true){
			try{
				System.out.print(this.rafile.readInt()+",");
				count++;
			}catch(EOFException e){
				System.out.println("count="+count);
				this.rafile.close();
				break;
			}
		}
	}
	public static void main(String[] args) throws IOException {
		int table[] = new int[20];
		java.util.Random rand = new Random();//随机数序列对象
		System.out.print("table("+table.length+"):");
		for(int i=0;i<table.length;i++)
			System.out.print((table[i]=rand.nextInt(200))+",");//从随机数序列中读取一个200以内 的随机数
		System.out.println();
		
		AppendFile afile=new AppendFile("Random.text");
		afile.append(table);
		afile.readFromFile();
	}
}
